package cn.tedu.csmall.product.mapper;

import cn.tedu.csmall.product.pojo.entity.Album;
import cn.tedu.csmall.product.pojo.entity.BrandCategory;
import cn.tedu.csmall.product.pojo.vo.AlbumStandardVO;
import cn.tedu.csmall.product.pojo.vo.BrandCategoryListVO;
import cn.tedu.csmall.product.pojo.vo.BrandCategoryStrandardVO;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 品牌分类的Mapper接口
 */
@Repository
public interface BrandCategoryMapper {

    /**
     * 添加品牌分类
     * @return  影响的行数
     * @param b 要添加的品牌分类对象
     */
    int insert(BrandCategory b);

    /**
     * 批量添加品牌分类
     * @param list      要添加的品牌分类对象集合
     * @return          影响的行数
     */
    int insertBatch(List<Object> list);

    /**
     * 根据id删除商品分类数据
     * @param id  要删除的商品分类id
     * @return    受影响的行数
     */
    int deleteById(Long id);

    /**
     * 解绑品牌与类别
     * @param categoryId    类别id
     * @param brandId       品牌id
     * @return
     */
    int deleteByCategoryIdAndBrandIdAndBrandId(Long categoryId, Long brandId);

    /**
     * 根据id批量删除商品分类数据
     * @param ids  要删除的id数组
     * @return      受影响的行数
     */
    int deleteByIds(Long[] ids);

    /**
     * 根据id修改商品分类数据
     * @param brandCategory    封装了id和新数据的对象
     * @return         受影响的行数
     */
    int updateById(BrandCategory brandCategory);

    /**
     * 查询品牌分类数量
     * @return   品牌分类数量
     */
    int count();

    /**
     * 查询品牌类别的绑定关系是否存在
     * @param categoryId
     * @param brandId
     * @return
     */
    int countByCategoryIdAndBrandId(Long categoryId, Long brandId);

    /**
     * categoryId统计categoryId出现的次数
     * @param categoryId
     * @return
     */
    int countByCategoryId(Long categoryId);

    /**
     * 根据id查询相册的标准信息
     * @param id    要查询的相册id
     * @return      相册的标准信息,若id不存在则返回null
     */
    BrandCategoryStrandardVO getStandardById(Long id);

    /**
     * 查询商品分类列表信息
     * @return  商品分类列表信息
     */
    List<BrandCategoryListVO> listBrandCategory();

    /**
     * 统计对应id的品牌的关联品牌数据
     * @param brandId
     * @return
     */
    int countByBrandId(Long brandId);
}
